#ifndef USERSERVICE_H
#define USERSERVICE_H

#include <QString>
#include <QStringList>

class UserRepository;

/**
 * @brief UserService
 * 封装业务逻辑（和 UI 解耦）
 * - 校验用户输入
 * - 新增用户逻辑（首个用户继承隐藏控件，后续清空）
 * - 删除用户逻辑
 */
class UserService {
public:
    explicit UserService(UserRepository *repository);

    /// 设置 UI 文件路径 (repository 内部也会使用到)
    void setUiPath(const QString &uiPath);

    /// 校验新增用户是否合法
    bool isValidNewUser(const QString &username, QString &errorMsg) const;

    /// 校验删除用户是否合法
    bool isExistingUser(const QString &username, QString &errorMsg) const;

    /// 添加用户
    void addUser(const QString &username,
                 const QStringList &currentHiddenCtrls,
                 int existingUserCount);

    /// 删除用户
    void deleteUser(const QString &username);

private:
    UserRepository *m_userRepository;
    QString m_uiPath;
};

#endif // USERSERVICE_H
